home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 32 / CD Expert nº 32.iso / Army Men TiS / data1.cab / Required_Files / rules / it_ai.txt < prev    next >
Text File  |  1999-10-08  |  4KB  |  134 lines

  1. // @1 = color to do AI for, @2 = color of enemy, @3 = value for @1Action variable
  2. macro it_ai_enemy 3
  3. {
  4.     // these events setup the @1Action variable
  5.  
  6.     // before attacking @2 make sure @2 is in the game and is not an ally
  7.     if @1SetAttack@2 testvar IsColorInGame @2 > 0 and IsAlly @1 @2 = 0 then
  8.         setvar @1Action @3,
  9.         trigger @1ActionOrders,
  10.         trigger @1StartTimeOut
  11.  
  12.     // if @2 not in game pick another action
  13.     if @1SetAttack@2 testvar IsColorInGame @2 = 0 then
  14.         triggerdelay 1000 @1ChooseAction
  15.  
  16.     // if @2 is an ally pick another action
  17.     if @1SetAttack@2 testvar IsAlly @1 @2 = 1 then
  18.         triggerdelay 1000 @1ChooseAction
  19.  
  20.     // these events do the actual attack orders
  21.  
  22.     if @1ActionOrders testvar @1Action = @3 then
  23.         order @1sarge1 follow @2sarge1 inmode attack,
  24.         order @1 group 1 follow @1sarge1 inmode defend,
  25.         order @1 group 2 follow @2sarge1 inmode attack,
  26.         order @1 group 3 follow @2sarge1 inmode attack,
  27.         order @1 group 4 follow @2sarge1 inmode attack,
  28.         order @1 group 5 follow @2sarge1 inmode attack
  29.  
  30.     if @1check@2score testvar teamscore @2 >= @1winningScore and IsAlly @1 @2 = 0 then
  31.         setvar @1winningScore teamscore @2,
  32.         setvar @1winningColor @3
  33.  
  34.     if @1AttackWinningColor testvar @1winningColor = @3 then
  35.         trigger @1SetAttack@2
  36. }
  37.  
  38. // @1 = color of army to do AI for, @2-@4 = other colors
  39. macro it_ai_macro 4
  40. {
  41.     // This variable holds the current action for @1
  42.     // 0 means no action, 1 means attack @2, 2 means attack @3, 3 means attack @4,
  43.     // 4 means go to base
  44.     variable @1Action 0
  45.  
  46.     // this variable is set to the winning score if @1 is not winning
  47.     variable @1winningScore 0
  48.  
  49.     // this variable is set to the winning color (e.g. green, tan) if @1 is not winning
  50.     variable @1winningColor 0
  51.  
  52.     if startup1 then
  53.         triggerdelay 1000 @1ChooseNewAction,
  54.         triggerdelay 2000 @1RegularOrders
  55.  
  56.     if @1ChooseNewAction then
  57.         setvar @1Action 0,
  58.         trigger @1ChooseAction
  59.  
  60.     // if @1 has no current action then pick a random action
  61.     // keep doing this until an action is set
  62.     if @1ChooseAction testvar @1Action = 0 and @1IsOnItTeam = 1 then
  63.         trigger @1PickRandomColorToAttack
  64.  
  65.     if @1ChooseAction testvar @1Action = 0 and @1IsOnItTeam = 0 then
  66.         trigger @1CalculateWinningTeam,
  67.         trigger @1PickNotItAction
  68.  
  69.     if @1PickNotItAction testvar @1winningscore < teamscore @1 then
  70.         trigger @1GotoBase
  71.  
  72.     if @1PickNotItAction testvar @1winningscore >= teamscore @1 then
  73.         trigger @1AttackWinningColor
  74.  
  75.     if @1CalculateWinningTeam then
  76.         setvar @1winningScore 0,
  77.         setvar @1winningColor 0,
  78.         trigger @1check@2score,
  79.         trigger @1check@3score,
  80.         trigger @1check@4score
  81.  
  82.     if @1PickRandomColorToAttack then random
  83.         trigger @1SetAttack@2,
  84.         trigger @1SetAttack@3,
  85.         trigger @1SetAttack@4
  86.  
  87.     expand it_ai_enemy ( @1 @2 1 )
  88.     expand it_ai_enemy ( @1 @3 2 )
  89.     expand it_ai_enemy ( @1 @4 3 )
  90.  
  91.     // this event is for going back to base to defend yourself when not it
  92.     if @1GotoBase then
  93.         setvar @1Action 4,
  94.         trigger @1ActionOrders,
  95.         trigger @1StartTimeOut
  96.  
  97.     if @1ActionOrders testvar @1Action = 4 then
  98.         order @1sarge1 goto @1base inmode attack,
  99.         order @1 group 1 follow @1sarge1 inmode defend,
  100.         order @1 group 2 goto near@1base inmode attack,
  101.         order @1 group 3 goto near@1base inmode attack,
  102.         order @1 group 4 goto near@1base inmode defend,
  103.         order @1 group 5 goto near@1base inmode defend
  104.  
  105.     // these events choose new actions if a sarge is killed
  106.  
  107.     if itHasChanged then
  108.         triggerdelay 100 @1ChooseNewAction,
  109.         triggerdelay 3100 @1ActionOrders        // allow time for resurrect
  110.  
  111.     // these are the standing order regardless of what mode sarge is in
  112.         
  113.     if @1RegularOrders then
  114.         order @1 group 7 goto @1base inmode defend,
  115.         trigger @1ActionOrders,
  116.         triggerdelay 5000 @1RegularOrders
  117.  
  118.     // timeout code - if mode has not changed for a while then change it
  119.  
  120.     variable @1TimeOutVar 0
  121.     variable @1LastTimeOutVar 1
  122.  
  123.     if @1StartTimeOut then
  124.         addvar @1TimeOutVar 1,
  125.         triggerdelay 120000 @1CheckTimeOut
  126.  
  127.     if @1CheckTimeOut testvar @1TimeOutVar = @1LastTimeOutVar then
  128.         trigger @1ChooseNewAction
  129.  
  130.     if @1CheckTimeOut testvar @1TimeOutVar <> @1LastTimeOutVar then
  131.         addvar @1LastTimeOutVar 1
  132. }
  133.  
  134.